# coding: utf-8
from google.appengine.ext import db
from pycode.account.models import UserProfile
from pycode.account import get_current_user_profile
from pycode.settings import DEFAULT_LANG

class ContentBase(db.Model):
	"""
	Базовый класс для всего контента
	"""
	name = db.StringProperty()
	creator_key = db.StringProperty()
	
	# Время создания и последней модификации текста статьи
	created = db.DateTimeProperty(auto_now_add = True)
	modified = db.DateTimeProperty(auto_now = True)
	
	# Опубликовано ли
	is_published = db.BooleanProperty()
	
	def get_creator(self):
		return UserProfile.get(self.creator_key)

class ContentTag(db.Model):
	"""
	Тег для классификации контента
	"""
	name = db.StringProperty()
	content = db.ReferenceProperty(ContentBase)

class Article(ContentBase):
	"""
	Статья, состоящая из нескольких текстов на разных языках
	"""
	is_news = db.BooleanProperty(default = True)
	
	def get_text(self, lang):
		for text in self.textes:
			if text.lang == lang:
				if text.title:
					return text
				else:
					for text in self.textes:
						if text.title:
							return text
	
	def current_lang_text(self):
		profile = get_current_user_profile()
		if profile:
			# User logged in
			lang = profile.lang
		else:
			lang = DEFAULT_LANG
		return self.get_text(lang)


class ArticleText(db.Model):
	"""
	Текст статьи на каком-то определенном языке
	"""
	# Язык текста статьи
	lang = db.StringProperty()
	# Заголовок текста статьи
	title = db.StringProperty()
	# Краткий текст статьи
	short_text = db.TextProperty()
	# Полный текст статьи
	text = db.TextProperty()
	# Статья, которой принадлежит этот текст статьи
	article = db.ReferenceProperty(Article, collection_name = "textes")
